Crate vector_traits

source ·
Expand description

Vector-Traits Crate

vector-traits is a Rust crate designed to provide a set of traits for abstracting over different vector implementations and scalar types, offering a unified interface for a basic set of vector operations. This crate facilitates seamless transitions between different vector libraries and scalar precisions (e.g., f32 and f64) without requiring significant code modifications.

Features

  • Abstract over two-dimensional and three-dimensional vectors with GenericVector2 and GenericVector3 traits.
  • Generic scalar trait GenericScalar for a flexible scalar type handling.
  • Basic vector traits HasXY and HasXYZ for down to metal, custom vector storage types, e.g., FFI types.
  • Seamless transition between different vector libraries like cgmath and glam.
  • Ability to switch between different scalar types (f32, f64) effortlessly.

Supported Vector Implementations

Currently, the following vector types from cgmath and glam libraries are supported:

  • glam::Vec2
  • glam::DVec2
  • glam::Vec3
  • glam::DVec3
  • cgmath::Vector2
  • cgmath::Vector3

Usage

Add vector-traits to your Cargo.toml dependencies along with the desired features:

[dependencies]
vector-traits = { version = "0.3.4", features = ["glam", "cgmath"] }  # only use what you need

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

License

Licensed under either of

at your option.

Re-exports

Traits

  • A workaround for Rust’s limitations where external traits cannot be implemented for external types.
  • A trait meant to to represent f32 or f64
  • A generic two-dimensional vector trait, designed for flexibility in precision.
  • A generic three-dimensional vector trait, designed for flexibility in precision.
  • A basic two-dimensional vector trait, designed for flexibility in precision.
  • A basic three-dimensional vector trait, designed for flexibility in precision.